/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;
import java.sql.*;
import Fachada.Fachada;
import LogicaNegocio.*;
import java.util.Vector;

/**
 *
 * @author GEMA
 */
public class DAOCategoria
{
    Fachada fachada;

    public DAOCategoria()
    {
        fachada = new Fachada();
    }

    public int guardarCategoria(Categoria categoria)
    {   String sql_guardar;
        sql_guardar="INSERT INTO Categoria(codigo_categoria, nombre_categoria) VALUES" +
                    "('"+ categoria.getCodigoCategoria()+"','"+categoria.getNombreCategoria()+"')";

        try
        {
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia=conexion.createStatement();
            int numFilas= sentencia.executeUpdate(sql_guardar);
            conexion.close();
            return numFilas;
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }
        catch(Exception e)
        { System.out.println(e);
        }
        return -1;

    }

    public int modificarNombreCategoria(Categoria categoria)
    {
         String sql_modificar;
         sql_modificar="UPDATE Categoria " +
                       "SET nombre_categoria = '" + categoria.getNombreCategoria()+ "' " +
                       "WHERE codigo_categoria = '" + categoria.getCodigoCategoria()+"'";

         try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            int numFilas = sentencia.executeUpdate(sql_modificar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return -1;
    }

    public Vector<Categoria> consultarCategorias()
    {
        String sql_select;
        sql_select = "SELECT codigo_categoria, nombre_categoria " +
                     " FROM Categoria";

        Vector <Categoria> vecCategoria = new Vector <Categoria>();

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next())
            {
                Categoria categoria = new Categoria(tabla.getString(1),tabla.getString(2));
                vecCategoria.addElement(categoria);
            }
            conn.close();
            System.out.println("Conexion cerrada");
            return vecCategoria;
        }
        catch(SQLException e)
        {
            System.out.println(e);
            return null;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
    }

    public Categoria consultarCategoria(String codigoCat) {
        String sql_select;
        sql_select = "SELECT * FROM Categoria";

        try{
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia = conexion.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            Categoria categoria = null;

            while(tabla.next())
            {
               categoria = new Categoria(tabla.getString(1),tabla.getString(2));
            }
            conexion.close();
            System.out.println("Conexion cerrada");
            return categoria;
        }
         catch(SQLException e)
         {
             System.out.println(e);
             return null;
         }
         catch(Exception e){
             System.out.println(e);
             return null;
         }
    }

    public void ConectarseABd()
    {
        try
        {
            Connection conexion= fachada.ConexionBaseDatos();

            conexion.close();
            System.out.println("Conexion cerrada");

        }
        catch(SQLException e)
         {
             System.out.println(e);

         }
         catch(Exception e)
         {
             System.out.println(e);
         }

    }

    public String eliminarProductoConCategoria(String codigoCat)
    {
        String codigoProducto= " ";
        String sql_existeEnProducto;

        sql_existeEnProducto="SELECT codigo_producto " +
                             "FROM Producto P, Articulo A " +
                             "WHERE A.codigo_categoria='"+ codigoCat+ "' " +
                             "AND P.codigo_producto=A.codigo_articulo " ;
                             

        try{
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia = conexion.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_existeEnProducto);
            while(tabla.next())
            {
                codigoProducto= tabla.getString(1);
            }
            conexion.close();
            //System.out.println("Conexion cerrada");
            //System.out.println("***********FILAS************"+ codigoProducto);
            return codigoProducto;
        }
         catch(SQLException e)
         {
             System.out.println(e);
             return null;
         }
         catch(Exception e){
             System.out.println(e);
             return null;
         }

    }

    public String eliminarServicioConCategoria(String codigoCat)
    {   String codServicio=" ";
        String sql_existeEnServicio;

        sql_existeEnServicio="SELECT codigo_servicio " +
                             "FROM Servicio S, Articulo A " +
                             "WHERE A.codigo_categoria='"+ codigoCat+ "' " +
                             "AND S.codigo_servicio=A.codigo_articulo " ;
                             

          try{
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia = conexion.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_existeEnServicio);
            while(tabla.next())
            {
                codServicio = tabla.getString(1);
            }

            conexion.close();
            //System.out.println("Conexion cerrada");
            //System.out.println("***********FILAS************"+codServicio);
            return codServicio;
        }
         catch(SQLException e)
         {
             System.out.println(e);
             return null;
         }
         catch(Exception e){
             System.out.println(e);
             return null;
         }
    }

    public int eliminarCategoria(String codCategoria)
    {
        String sql_eliminar;
        
        sql_eliminar = "DELETE FROM Categoria "+
                        "WHERE codigo_categoria = " + "'" +codCategoria + "'";


        try
        {
            Connection conexion = fachada.ConexionBaseDatos();
            Statement sentencia = conexion.createStatement();
            int numFilas = sentencia.executeUpdate(sql_eliminar);
            conexion.close();
            return numFilas;
        }
        catch(SQLException e)
        {System.out.println(e); }
        catch(Exception e)
        {System.out.println(e); }
        return -1;
    }

 
}
